package com.rd.teacher.jichao.day07;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;

public class HashSetTest {

    public static void main(String[] args) {
//        HashSet set = new HashSet();
//        set.add("1");
//        set.add("2");
//        System.out.println(set.add("1"));
//        System.out.println(set.size());
//
//        for (Object obj : set) {
//            System.out.println(obj);
//        }

        // HashMap -> HashSet
        // <"1",null>
        // <"2",null>

//        set.add(new A());
//        set.add(new A());
//        set.add(new B());
//        set.add(new B());
//        set.add(new C());
//        set.add(new C());
//        for (Object obj : set) {
////            System.out.println(obj);
//        }
//
//        B b1 = new B();
//        B b2 = new B();
//        System.out.println(b1.equals(b2));
        // set中有几个A 几个B 几个C
        // 2 2 2
        // 1 1 1
        // 2 1 1
        // 2 1 2
        // 1 2 1
        // 1 1 2
        // 2 2 1
        // 1 2 2


//        LinkedHashSet linkedHashSet = new LinkedHashSet();
//        linkedHashSet.add("1");
//        linkedHashSet.add("2");
//        linkedHashSet.add("3");
//        linkedHashSet.add("2");
//
//        for (Object o : linkedHashSet) {
//            System.out.println(o);
//        }

        System.out.println(Integer.compare(20, 10));
        System.out.println(Integer.compare(20, 20));
        System.out.println(Integer.compare(10, 20));

        ArrayList arrayList = new ArrayList();
        arrayList.add(new D(17));
        arrayList.add(new D(20));
        arrayList.add(new D(15));
        arrayList.add(new D(18));

        Collections.sort(arrayList);
        System.out.println(arrayList);
        // 15 17 18 20
        // 20 18 17 15
    }
}

class D implements Comparable {
    int age;

    public D(int age) {
        this.age = age;
    }

    // 20.compareTo(10)
    // return 1  调换顺序
    //  两个对象相等  返回0
    //  return -1 默认不调换
    //  10 20
    @Override
    public int compareTo(Object o) {
        D d = (D) o;
        if (this.age > d.age) {
//            return 1;
            return -1;
        } else if (this.age < d.age) {
//            return -1;
            return 1;
        }
        return 0;
    }

    @Override
    public String toString() {
        return "D{" +
                "age=" + age +
                '}';
    }
}


class A {
    @Override
    public boolean equals(Object obj) {
        return true;
    }
}

class B {
    @Override
    public int hashCode() {
        return 1;
    }
}

class C {
    @Override
    public int hashCode() {
        return 2;
    }

    @Override
    public boolean equals(Object obj) {
        return true;
    }
}